#!/usr/bin/python
# -*-coding:UTF-8 -*-

# ========================
# @Time  : 2021/3/1
# @Author: Sunny
# ========================

from queue import Queue, LifoQueue, PriorityQueue

"""
队列：能够确保数据的安全
* queue模块只能在一个进程中使用，一个进程中多个线程使用

Queue:先入先出的队列
"""

# 初始化一个队列，默认是不限定队列的长度，也可以通过参数指定队列中数据的最大长度
q = Queue(2)

# 1.put方法:往队列中添加数据
q.put(11)
q.put(22)
# q.put(33)
# q.put(44)
# q.put(55)
# q.put(999, timeout=2)  # 如果指定列队长度是5，当增加的数据超出限制，则数据会堵塞添加不进去,
                        # timeout指设置等待时间(默认是一直等待)，若超过2秒还没有空余位置可以将数据添加出去，则会提示异常报错

# q.put(999, block=False)   #block=False 往列队中添加数据，不等待，如果列队中数据已满，则报错
#
# # 2.get方法:往队列中去获取数据
# print(q.get())
# print(q.get())
# # print(q.get(timeout=2))  #timeout=2 2秒钟没有获取到数据，就异常提示列队为空
# # print(q.get(block=False))  #设置不等待
#


#
# #3.empty方法：判断队列中数据是否为空，队列中数据为空，返回True
# print(q.empty())
#
#
# #4.full方法：判断列队中数据是否已满,数据已满，返回True
# print(q.full())
#
#
# #5.put_nowait方法:增加数据不等待，等同于q.put(999, block=False)
# q.put_nowait(888)
#
# #6.get_nowait:增加数据不等待，等同于q.get(999, block=False)
# q.get_nowait()


#7.qsize方法：获取队列中任务数量(多少条数据)
# print(q.qsize())

